home *** CD-ROM | disk | FTP | other *** search
- /* $CVSid: @(#)rcs.h 1.18 94/09/23 $ */
-
- /*
- * Copyright (c) 1992, Brian Berliner and Jeff Polk
- * Copyright (c) 1989-1992, Brian Berliner
- *
- * You may distribute under the terms of the GNU General Public License as
- * specified in the README file that comes with the CVS 1.4 kit.
- *
- * RCS source control definitions needed by rcs.c and friends
- */
-
- #define RCS "rcs"
- #define RCS_CI "ci"
- #define RCS_CO "co"
- #define RCS_RLOG "rlog"
- #define RCS_DIFF "rcsdiff"
- #define RCS_RCSMERGE "rcsmerge"
- #define RCS_MERGE_PAT "^>>>>>>> " /* runs "grep" with this pattern */
- #define RCSEXT ",v"
- #define RCSPAT "*,v"
- #define RCSHEAD "head"
- #define RCSBRANCH "branch"
- #define RCSSYMBOLS "symbols"
- #define RCSDATE "date"
- #define RCSDESC "desc"
- #define RCSEXPAND "expand"
-
- /* Used by the version of death support which resulted from old
- versions of CVS (e.g. 1.5 if you define DEATH_SUPPORT and not
- DEATH_STATE). Only a hacked up RCS (used by those old versions of
- CVS) will put this into RCS files. Considered obsolete. */
- #define RCSDEAD "dead"
-
- #define DATEFORM "%02d.%02d.%02d.%02d.%02d.%02d"
- #define SDATEFORM "%d.%d.%d.%d.%d.%d"
-
- /*
- * Opaque structure definitions used by RCS specific lookup routines
- */
- #define VALID 0x1 /* flags field contains valid data */
- #define INATTIC 0x2 /* RCS file is located in the Attic */
- #define PARTIAL 0x4 /* RCS file not completly parsed */
-
- struct rcsnode
- {
- int refcount;
- int flags;
- char *path;
- char *head;
- char *branch;
- char *symbols_data;
- char *expand;
- List *symbols;
- List *versions;
- };
-
- typedef struct rcsnode RCSNode;
-
- struct rcsversnode
- {
- char *version;
- char *date;
- char *author;
- char *next;
- int dead;
- List *branches;
- };
- typedef struct rcsversnode RCSVers;
-
- /*
- * CVS reserves all even-numbered branches for its own use. "magic" branches
- * (see rcs.c) are contained as virtual revision numbers (within symbolic
- * tags only) off the RCS_MAGIC_BRANCH, which is 0. CVS also reserves the
- * ".1" branch for vendor revisions. So, if you do your own branching, you
- * should limit your use to odd branch numbers starting at 3.
- */
- #define RCS_MAGIC_BRANCH 0
-
- /*
- * exported interfaces
- */
- RCSNode *RCS_parse PROTO((const char *file, const char *repos));
- RCSNode *RCS_parsercsfile PROTO((char *rcsfile));
- char *RCS_check_kflag PROTO((const char *arg));
- char *RCS_getdate PROTO((RCSNode * rcs, char *date, int force_tag_match));
- char *RCS_gettag PROTO((RCSNode * rcs, char *symtag, int force_tag_match,
- int return_both));
- char *RCS_getversion PROTO((RCSNode * rcs, char *tag, char *date,
- int force_tag_match, int return_both));
- char *RCS_magicrev PROTO((RCSNode *rcs, char *rev));
- int RCS_isbranch PROTO((RCSNode *rcs, const char *rev));
- int RCS_nodeisbranch PROTO((RCSNode *rcs, const char *tag));
- char *RCS_whatbranch PROTO((RCSNode *rcs, const char *tag));
- char *RCS_head PROTO((RCSNode * rcs));
- int RCS_datecmp PROTO((char *date1, char *date2));
- time_t RCS_getrevtime PROTO((RCSNode * rcs, char *rev, char *date, int fudge));
- List *RCS_symbols PROTO((RCSNode *rcs));
- void RCS_check_tag PROTO((const char *tag));
- void freercsnode PROTO((RCSNode ** rnodep));
- char *RCS_getbranch PROTO((RCSNode * rcs, char *tag, int force_tag_match));
-
- int RCS_isdead PROTO((RCSNode *, const char *));
- char *RCS_getexpand PROTO ((RCSNode *));
-